<template>
  <div class="tables-edit-outer">
    <div v-if="!isEditting" class="tables-edit-con">
      <span class="value-con">{{ value }}</span>
      <Button
        v-if="editable"
        @click="startEdit"
        class="tables-edit-btn"
        style="padding: 2px 4px"
        type="text"
        ><Icon type="md-create"></Icon
      ></Button>
    </div>
    <div v-else class="tables-editting-con">
      <Input :value="value" @input="handleInput" class="tables-edit-input" />
      <Button @click="saveEdit" style="padding: 6px 4px" type="text"
        ><Icon type="md-checkmark"></Icon
      ></Button>
      <Button @click="canceltEdit" style="padding: 6px 4px" type="text"
        ><Icon type="md-close"></Icon
      ></Button>
    </div>
  </div>
</template>

<script>
export default {
  name: "TablesEdit",
  props: {
    value: [String, Number],
    edittingCellId: String,
    params: Object,
    editable: Boolean,
  },
  computed: {
    isEditting() {
      return (
        this.edittingCellId ===
        `editting-${this.params.index}-${this.params.column.key}`
      );
    },
  },
  methods: {
    handleInput(val) {
      this.$emit("input", val);
    },
    startEdit() {
      this.$emit("on-start-edit", this.params);
    },
    saveEdit() {
      this.$emit("on-save-edit", this.params);
    },
    canceltEdit() {
      this.$emit("on-cancel-edit", this.params);
    },
  },
};
</script>

<style lang="less">
.tables-edit-outer {
  height: 100%;
  .tables-edit-con {
    position: relative;
    height: 100%;
    .value-con {
      vertical-align: middle;
    }
    .tables-edit-btn {
      position: absolute;
      right: 10px;
      top: 0;
      display: none;
    }
    &:hover {
      .tables-edit-btn {
        display: inline-block;
      }
    }
  }
  .tables-editting-con {
    .tables-edit-input {
      width: ~"calc(100% - 60px)";
    }
  }
}
</style>